#ifndef EFFECT_H_
#define EFFECT_H_


#include <string>
#include <vector>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>

using namespace std;
using namespace cv;

// An abstract class of OpenCV effects.
class Effect {

public:
	// Class destructor.
	virtual ~Effect(void);

	// An abstract method that represents activation of an OpenCV effect process.
	virtual void processEffect(Mat& src, Mat& dst) = 0;
};

#endif /* EFFECT_H_ */
